<?php

require_once("ISDAO.php");

/**
 * Clase padre de todos los DAOs contiene metodos generales que son
 * heredados por todos los DAOs y son usados por el Administrador de
 * Persistencia. 
 *
 */

abstract class SDAO implements ISDAO {

    private $administradorPersistencia;
    private $sentenciasSQL = array();
    protected $columnas;
    protected $orderbystr;
    protected $tamPagina;
    protected $comienzo;
    protected $tamTotal;

    public function getSentenciasSQL() {
        return $this->sentenciasSQL;
    }

    public function limpiarSentencias(){
        $this->sentenciasSQL = array();
    }
    
    /**
     * Adiciona un sentencia SQL a la matriz de sentencias que se ejecutaran dentro de una misma
     * transaccion.
     *
     * @param string $unaSentenciaSQL
     * @return boolean
     */
    public function adicionarSentenciaSQL($unaSentenciaSQL){
        if($unaSentenciaSQL != null && strlen($unaSentenciaSQL) > 0){
            $this->sentenciasSQL[] = $unaSentenciaSQL;
            return true;
        }
        return false;
    }
    
    /**
     * Obtiene el siguiente de la secuencia indentificada por "$unNombreSecuencia"
     * en caso que este parametro sea nulo, retornara el id de la ultima fila insertada.
     * Hace uso del administrador de persistencia para este proceso.
     *
     * @param string $unNombreSecuencia
     * @return SAdministradorPersistencia
     */
    public function getSecuencia($unNombreSecuencia){
        return $this->administradorPersistencia->getSecuencia($unNombreSecuencia);
    }

    /**
     * Le asigno a un DAO una instacia unica del administrador de persistencia
     * lo que permite que cada DAO maneje su propio espacio, contexto de ejecucion
     * y conexion a la Base de Datos
     *
     * @param ISAdministradorPersistencia $unAdministradorPersistencia
     */
    public function setAdministradorPersistencia(ISAdministradorPersistencia $unAdministradorPersistencia){
        $this->administradorPersistencia = $unAdministradorPersistencia;
    }
    
    /**
     *
     * @return SInfoPaginacion
     */
	public function getInfoPaginacion(){
    	return $this->infoPaginacion;
    }
    
    /**
     *
     * @param SInfoPaginacion $infoPaginacion
     */
	public function setInfoPaginacion($infoPaginacion){
    	$this->infoPaginacion = $infoPaginacion;
    }
    
    /**
     *
     * @return String
     */
    public function getOrderbystr(){
    	return $this->orderbystr;
    }
    
    /**
     *
     * @param String $orderbystr
     */
	public function setOrderbystr($orderbystr){
    	$this->orderbystr = $orderbystr;
    }
	
    /**
     * Firma del metodo que se encarga de devolver la Pk del ultimo registro insertado
     *
     */
    public function procesarPosterior(){}
}
?>